"""
编程题
(1).定义员工类Employee,包含私有属性(姓名和月工资),以及计算年工资get_annual的方法
(2).普通员工(Worker)和经理(Manager)继承员工类,经理多了奖金bonus属性和管理manage方法,普通员工
类多了work方法,普通员工和经理要求根据需要重写get_annual方法
(3).编写函数 show_emp_annual(e:Employee),实现获取任何员工对象的年工资
(4).编写函数working(e:Employee),如果是普通员工,则调用work方法,如果是经理,则调用manage方法
思路分析
(1)员工类
Employee  私有属性  name , salary  方法: get_annual 构造方法
(2)普通员工
Worker(Employee)  方法  worker   重写 get_annual
(3)经理
Manager(Employee) 属性 bonus   方法  manage   get_annual
(4)函数show_emp_annual(e Employee)
(5)working(e:Employee)

"""
class Employee:
    name = None
    salary = None
    def __init__(self , name , salary):
        self.name = name
        self.salary = salary

    #计算年工资的方法
    def get_annual(self):
        return self.salary * 12

class Worker(Employee):
    def work(self):
        print("员工正在工作....")

class Manager(Employee):
    bonus = None
    def __init__(self , name , salary , bonus):
        super().__init__(name , salary)
        self.bonus = bonus

    #计算年工资的方法 (工资加上奖金)
    def get_annual(self):
        return (self.salary + self.bonus) * 12

    def manage(self):
        print("管理员正在进行管理...")

#编写函数 show_emp_annual(e:Employee),实现获取任何员工对象的年工资
def show_emp_annual(e:Employee):
    return e.get_annual()

#编写函数working(e:Employee),如果是普通员工,则调用work方法,如果是经理,则调用manage方法
#我做的东西 是按照我的思路走的   不一定和韩顺平的一样  但是只要目的最终能达到就可以   看老韩的  是一种优化
#不一定要按照老师的来 条条大路通罗马   所以 自己的思路才是最珍贵的  其他的是参考
def working(e:Employee):
    #如果当前对象是属于普通员工
    if isinstance(e , Worker):
        e.work()
    else:
        pass

    #如果当前对象是属于管理者
    if isinstance(e, Manager):
        e.manage()
    else:
        pass

#测试
#员工
worker1 = Worker("樊振东" , 10000)
#领导
manager1 = Manager("秦志戬" , 20000 , 2000)

#计算员工的年工资
worker1_year = show_emp_annual(worker1)
print(worker1_year)
#计算领导的年工资
manager1_year = show_emp_annual(manager1)
print(manager1_year)

working(worker1)
working(manager1)




